package pwd.allen.injector;

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.metadata.TableInfo;

import java.util.List;

/**
 * 自定义sql注入器
 * 通过继承 AbstractSqlInjector 并实现 getMethodList 方法，可以为某个 Mapper 接口添加自定义的 SQL 方法，从而扩展 Mybatis-Plus 自动化生成的 CRUD 功能
 * @author 门那粒沙
 * @create 2020-06-25 21:32
 **/
public class MySqlInjector extends DefaultSqlInjector {
    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
        // DefaultSqlInjector是默认的注入器，注入了mybatis plus提供的全局方法例如selectById等，要在它的基础上添加，以免用不了基础的方法
        List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);

        // 添加自定义的AbstractMethod实现，然后Mapper接口要声明相应的方法

        return methodList;
    }
}
